home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 24 / CU Amiga Magazine's Super CD-ROM 24 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-07].iso / CUCD / Programming / SWI / source / src / pl-os.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-03-24  |  4.9 KB  |  219 lines

  1. /*  $Id: pl-os.h,v 1.39 1998/03/24 13:39:07 jan Exp $
  2.  
  3.     Copyright (c) 1990 Jan Wielemaker. All rights reserved.
  4.     See ../LICENCE to find out about your rights.
  5.     jan@swi.psy.uva.nl
  6.  
  7.     Purpose: Describe your OS here
  8. */
  9.  
  10. #if TIME_WITH_SYS_TIME
  11. # include <sys/time.h>
  12. # include <time.h>
  13. #else
  14. # if HAVE_SYS_TIME_H
  15. #  include <sys/time.h>
  16. # else
  17. #  include <time.h>
  18. # endif
  19. #endif
  20.  
  21.  
  22.         /********************************
  23.         *        MEMORY MANAGEMENT      *
  24.         *********************************/
  25.  
  26. #define alloc_t        size_t        /* argument type of Prolog's alloc */
  27.  
  28. #define allocHeap(n)    alloc_heap((alloc_t) (n))
  29. #define freeHeap(p, n)    free_heap((char *)(p), (alloc_t)(n))
  30. #define allocGlobal(n)    alloc_global((int) (n))
  31.  
  32. extern Void Allocate(long);
  33.  
  34.         /********************************
  35.         *         MISCELLANEOUS         *
  36.         *********************************/
  37.  
  38. extern char *OsError(void);
  39. extern bool initOs(void);
  40. extern volatile void Halt(int);
  41.  
  42.         /********************************
  43.         *           ARITHMETIC          *
  44.         *********************************/
  45.  
  46. extern long Random(void);
  47.  
  48.  
  49.         /********************************
  50.         *              FILES            *
  51.         *********************************/
  52.  
  53. #ifndef STREAM_OPEN_BIN_READ
  54. #define STREAM_OPEN_BIN_READ "rb"
  55. #endif
  56.  
  57. #ifndef STREAM_OPEN_BIN_WRITE
  58. #define STREAM_OPEN_BIN_WRITE "wb"
  59. #endif
  60.  
  61. #ifdef HAVE_POPEN
  62. #define PIPE 1
  63. #define Popen(path, m)    Sopen_pipe(OsPath(path), m)
  64. #define Pclose(fd)    pclose(fd)
  65. #endif
  66.  
  67. #if tos
  68. #define MAXPATHLEN    PATH_MAX
  69. #endif
  70.  
  71.  
  72. #define Fflush(fd)        Sflush(fd)
  73. #define Fclose(fd)        Sclose(fd)
  74. #define Open(path, how, mode)    open(OsPath(path), how, mode)
  75. #define Read(fd, buf, size)    read(fd, buf, size)
  76. #define Write(fd, buf, size)    write(fd, buf, size)
  77. #define Getc(fd)        Sgetc(fd)
  78. #define Putc(c, fd)        Sputc((char)(c), fd)
  79. #define Putw(w, fd)        Sputw((long)(w), fd)
  80. #define Getw(fd)        Sgetw(fd)
  81.  
  82.          /*******************************
  83.          *      PAGE AND TABLE-SIZE    *
  84.          *******************************/
  85.  
  86. #ifdef HAVE_SYSCONF
  87. #if defined(_SC_OPEN_MAX) && !defined(HAVE_GETPAGESIZE)
  88. #undef getdtablesize
  89. #define getdtablesize() sysconf(_SC_OPEN_MAX)
  90. #ifndef HAVE_GETDTABLESIZE
  91. #define HAVE_GETDTABLESIZE 1
  92. #endif
  93. #endif
  94. #if defined(_SC_PAGESIZE) && !defined(HAVE_GETPAGESIZE)
  95. #undef getpagesize
  96. #define getpagesize() sysconf(_SC_PAGESIZE)
  97. #ifndef HAVE_GETPAGESIZE
  98. #define HAVE_GETPAGESIZE 1
  99. #endif
  100. #endif
  101. #endif /*HAVE_SYSCONF*/
  102.  
  103. #ifndef HAVE_GETDTABLESIZE
  104. extern int    getdtablesize(void);
  105. #endif
  106. #ifndef HAVE_GETPAGESIZE
  107. extern int    getpagesize(void);
  108. #endif
  109.  
  110.          /*******************************
  111.          *        FILE ACCESS        *
  112.          *******************************/
  113.  
  114. #define ACCESS_EXIST    0
  115. #define ACCESS_EXECUTE    1
  116. #define ACCESS_READ    2
  117. #define ACCESS_WRITE    4
  118.  
  119.          /*******************************
  120.          *               TYPES        *
  121.          *******************************/
  122.  
  123. #if 0 && defined(__sun__) && defined(__svr4__)
  124. extern long random(void);
  125. extern int srandom(unsigned seed);
  126. #endif
  127.  
  128.         /********************************
  129.         *        TIME CONVERSION        *
  130.         *********************************/
  131.  
  132. extern struct tm *LocalTime(long *);
  133. extern real      CpuTime(void);
  134.  
  135.  
  136.         /********************************
  137.         *       IOSTREAM DESCR. SETS    *
  138.         ********************************/
  139.  
  140. #ifndef FD_ZERO
  141. #ifdef HAVE_SYS_SELECT_H
  142. #include <sys/select.h>
  143. #else
  144. #define FD_ZERO(s)    { *((unsigned long *)(s)) = (0L); }
  145. #define FD_SET(fd, s)    { *((unsigned long *)(s)) |= (1L << (fd)); }
  146. #define FD_ISSET(fd, s) ( (*((unsigned long *)(s)) & (1L << (fd))) != 0 )
  147. #endif
  148. #endif
  149.  
  150.         /********************************
  151.         *        TERMINAL CONTROL       *
  152.         *********************************/
  153.  
  154. #define TTY_COOKED     1        /* Initial mode: echo */
  155. #define TTY_RAW         2        /* Non-blocking, non-echo */
  156. #define TTY_OUTPUT     3        /* enable post-processing */
  157. #define TTY_SAVE     4        /* just save status */
  158.  
  159. #ifdef HAVE_TCSETATTR
  160. #include <termios.h>
  161. #include <unistd.h>
  162. #define O_HAVE_TERMIO 1
  163. #else /*HAVE_TCSETATTR*/
  164. #ifdef HAVE_SYS_TERMIO_H
  165. #include <sys/termio.h>
  166. #define termios termio
  167. #define O_HAVE_TERMIO 1
  168. #else
  169. #ifdef HAVE_SYS_TERMIOS_H
  170. #include <sys/termios.h>
  171. #define O_HAVE_TERMIO 1
  172. #endif
  173. #endif
  174. #endif /*HAVE_TCSETATTR*/
  175.  
  176. #ifdef O_HAVE_TERMIO
  177.  
  178. typedef struct
  179. { struct termios tab;        /* saved tty status */
  180.   int        mode;        /* Prolog;'s view on mode */
  181. } ttybuf;
  182.  
  183. #else /* !O_HAVE_TERMIO */
  184.  
  185. #ifdef HAVE_SGTTYB
  186. #include <sys/ioctl.h>
  187. typedef struct
  188. { struct sgttyb tab;        /* saved tty status */
  189.   int        mode;        /* Prolog;'s view on mode */
  190. } ttybuf;
  191.  
  192. #else
  193.  
  194. typedef struct
  195. { int        mode;        /* Prolog;'s view on mode */
  196. } ttybuf;
  197.  
  198. #endif /*HAVE_SGTTYB*/
  199. #endif /*O_HAVE_TERMIO*/
  200.  
  201. extern ttybuf    ttytab;            /* saved tty status */
  202. extern int    ttymode;        /* Current tty mode */
  203.  
  204. #define IsaTty(fd)    isatty(fd)
  205.  
  206. extern bool PushTty(ttybuf *, int mode);
  207. extern bool PopTty(ttybuf *);
  208. extern void ResetTty(void);
  209.  
  210.  
  211.         /********************************
  212.         *        PROCESS CONTROL        *
  213.         *********************************/
  214.  
  215. #define Wait(stat)    wait(stat)
  216.  
  217. extern int System(char *command);
  218. extern char *Which(const char *cmd, char *buf);
  219.